CM3D2 Converter.misc_INFO_MT_add
1# 「3Dビュー」エリア → 追加(Shift+A) → CM3D2 2import os 3import bpy 4from . import common 5from . import compat 6 7 8# メニュー等に項目追加 9def menu_func(self, context): 10 self.layout.separator() 11 self.layout.menu('MISC_INFO_MT_add_cm3d2', icon_value=common.kiss_icon()) 12 13 14# サブメニュー 15@compat.BlRegister() 16class misc_INFO_MT_add_cm3d2(bpy.types.Menu): 17 bl_idname = 'MISC_INFO_MT_add_cm3d2' 18 bl_label = "CM3D2" 19 20 def draw(self, context): 21 self.layout.operator('wm.append_cm3d2_figure', text="body001", icon_value=common.kiss_icon()).object_name = "body001.body" 22 self.layout.separator() 23 self.layout.operator('wm.append_cm3d2_figure', text="乳袋防止素体", icon=compat.icon('PIVOT_INDIVIDUAL')).object_name = "乳袋防止素体" 24 self.layout.separator() 25 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体", icon='MOD_ARMATURE').object_name = "Tスタンス素体" 26 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 足のみ", icon='SOUND').object_name = "Tスタンス素体 足のみ" 27 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 手のみ", icon='OUTLINER_DATA_ARMATURE').object_name = "Tスタンス素体 手のみ" 28 self.layout.separator() 29 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ", icon='OUTLINER_OB_ARMATURE').object_name = "anm出力用リグ・身体メッシュ" 30 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ(男)", icon='ARMATURE_DATA').object_name = "anm出力用リグ(男)・身体メッシュ" 31 32 33@compat.BlRegister() 34class CNV_OT_append_cm3d2_figure(bpy.types.Operator): 35 bl_idname = 'wm.append_cm3d2_figure' 36 bl_label = "CM3D2用の素体をインポート" 37 bl_description = "CM3D2関係の素体を現在のシーンにインポートします" 38 bl_options = {'REGISTER', 'UNDO'} 39 40 object_name = bpy.props.StringProperty(name="素体名") 41 42 def execute(self, context): 43 if bpy.ops.object.mode_set.poll(): 44 bpy.ops.object.mode_set(mode='OBJECT') 45 if bpy.ops.object.select_all.poll(): 46 bpy.ops.object.select_all(action='DESELECT') 47 48 blend_path = os.path.join(os.path.dirname(__file__), "append_data.blend") 49 with context.blend_data.libraries.load(blend_path) as (data_from, data_to): 50 data_to.objects = [self.object_name] 51 52 ob = data_to.objects[0] 53 compat.link(context.scene, ob) 54 compat.set_active(context, ob) 55 compat.set_select(ob, True) 56 57 for mod in ob.modifiers: 58 if mod.type == 'ARMATURE': 59 compat.link(context.scene, mod.object) 60 compat.set_select(mod.object, True) 61 62 return {'FINISHED'}
@compat.BlRegister()
class
misc_INFO_MT_add_cm3d216@compat.BlRegister() 17class misc_INFO_MT_add_cm3d2(bpy.types.Menu): 18 bl_idname = 'MISC_INFO_MT_add_cm3d2' 19 bl_label = "CM3D2" 20 21 def draw(self, context): 22 self.layout.operator('wm.append_cm3d2_figure', text="body001", icon_value=common.kiss_icon()).object_name = "body001.body" 23 self.layout.separator() 24 self.layout.operator('wm.append_cm3d2_figure', text="乳袋防止素体", icon=compat.icon('PIVOT_INDIVIDUAL')).object_name = "乳袋防止素体" 25 self.layout.separator() 26 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体", icon='MOD_ARMATURE').object_name = "Tスタンス素体" 27 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 足のみ", icon='SOUND').object_name = "Tスタンス素体 足のみ" 28 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 手のみ", icon='OUTLINER_DATA_ARMATURE').object_name = "Tスタンス素体 手のみ" 29 self.layout.separator() 30 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ", icon='OUTLINER_OB_ARMATURE').object_name = "anm出力用リグ・身体メッシュ" 31 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ(男)", icon='ARMATURE_DATA').object_name = "anm出力用リグ(男)・身体メッシュ"
def
draw(self, context):
21 def draw(self, context): 22 self.layout.operator('wm.append_cm3d2_figure', text="body001", icon_value=common.kiss_icon()).object_name = "body001.body" 23 self.layout.separator() 24 self.layout.operator('wm.append_cm3d2_figure', text="乳袋防止素体", icon=compat.icon('PIVOT_INDIVIDUAL')).object_name = "乳袋防止素体" 25 self.layout.separator() 26 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体", icon='MOD_ARMATURE').object_name = "Tスタンス素体" 27 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 足のみ", icon='SOUND').object_name = "Tスタンス素体 足のみ" 28 self.layout.operator('wm.append_cm3d2_figure', text="Tスタンス素体 手のみ", icon='OUTLINER_DATA_ARMATURE').object_name = "Tスタンス素体 手のみ" 29 self.layout.separator() 30 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ", icon='OUTLINER_OB_ARMATURE').object_name = "anm出力用リグ・身体メッシュ" 31 self.layout.operator('wm.append_cm3d2_figure', text="anm出力用リグ(男)", icon='ARMATURE_DATA').object_name = "anm出力用リグ(男)・身体メッシュ"
Inherited Members
- bpy_types.Menu
- draw_preset
- draw_collapsible
- bpy_types._GenericUI
- is_extended
- append
- prepend
- remove
- builtins.bpy_struct
- keys
- values
- items
- get
- pop
- as_pointer
- keyframe_insert
- keyframe_delete
- driver_add
- driver_remove
- is_property_set
- property_unset
- is_property_readonly
- is_property_overridable_library
- property_overridable_library_set
- path_resolve
- path_from_id
- type_recast
- bl_rna_get_subclass_py
- bl_rna_get_subclass
- id_properties_ensure
- id_properties_clear
- id_properties_ui
- id_data
@compat.BlRegister()
class
CNV_OT_append_cm3d2_figure34@compat.BlRegister() 35class CNV_OT_append_cm3d2_figure(bpy.types.Operator): 36 bl_idname = 'wm.append_cm3d2_figure' 37 bl_label = "CM3D2用の素体をインポート" 38 bl_description = "CM3D2関係の素体を現在のシーンにインポートします" 39 bl_options = {'REGISTER', 'UNDO'} 40 41 object_name = bpy.props.StringProperty(name="素体名") 42 43 def execute(self, context): 44 if bpy.ops.object.mode_set.poll(): 45 bpy.ops.object.mode_set(mode='OBJECT') 46 if bpy.ops.object.select_all.poll(): 47 bpy.ops.object.select_all(action='DESELECT') 48 49 blend_path = os.path.join(os.path.dirname(__file__), "append_data.blend") 50 with context.blend_data.libraries.load(blend_path) as (data_from, data_to): 51 data_to.objects = [self.object_name] 52 53 ob = data_to.objects[0] 54 compat.link(context.scene, ob) 55 compat.set_active(context, ob) 56 compat.set_select(ob, True) 57 58 for mod in ob.modifiers: 59 if mod.type == 'ARMATURE': 60 compat.link(context.scene, mod.object) 61 compat.set_select(mod.object, True) 62 63 return {'FINISHED'}
object_name: <_PropertyDeferred, <built-in function StringProperty>, {'name': '素体名', 'attr': 'object_name'}> =
<_PropertyDeferred, <built-in function StringProperty>, {'name': '素体名', 'attr': 'object_name'}>
def
execute(self, context):
43 def execute(self, context): 44 if bpy.ops.object.mode_set.poll(): 45 bpy.ops.object.mode_set(mode='OBJECT') 46 if bpy.ops.object.select_all.poll(): 47 bpy.ops.object.select_all(action='DESELECT') 48 49 blend_path = os.path.join(os.path.dirname(__file__), "append_data.blend") 50 with context.blend_data.libraries.load(blend_path) as (data_from, data_to): 51 data_to.objects = [self.object_name] 52 53 ob = data_to.objects[0] 54 compat.link(context.scene, ob) 55 compat.set_active(context, ob) 56 compat.set_select(ob, True) 57 58 for mod in ob.modifiers: 59 if mod.type == 'ARMATURE': 60 compat.link(context.scene, mod.object) 61 compat.set_select(mod.object, True) 62 63 return {'FINISHED'}
Inherited Members
- bpy_types.Operator
- as_keywords
- poll_message_set
- builtins.bpy_struct
- keys
- values
- items
- get
- pop
- as_pointer
- keyframe_insert
- keyframe_delete
- driver_add
- driver_remove
- is_property_set
- property_unset
- is_property_readonly
- is_property_overridable_library
- property_overridable_library_set
- path_resolve
- path_from_id
- type_recast
- bl_rna_get_subclass_py
- bl_rna_get_subclass
- id_properties_ensure
- id_properties_clear
- id_properties_ui
- id_data